package com.campus.app.service;

import com.campus.commons.entity.CheckEvening;
import com.baomidou.mybatisplus.extension.service.IService;
import com.campus.commons.entity.Feedback;
import com.campus.commons.utils.MyPage;
import com.campus.commons.utils.Result;
import org.springframework.scheduling.annotation.Scheduled;

import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 晚自习值班表 服务类
 * </p>
 *
 * @author Rin
 * @since 2020-12-24
 */
public interface CheckEveningsService extends IService<CheckEvening> {
     Map<Integer, CheckEvening> checkEveningMap = new HashMap<>();

    /**
     *  获取所有晚自习记录
     * @param myPage
     * @return
     */
     Result<List<CheckEvening>> getAllCheckEvening(@Valid  MyPage<CheckEvening>myPage);

    /**
     *  获取晚自习记录， 多条件查询： 班级名称(模糊)， 开始时间，结束时间
     * @param myPage
     * @param start 开始时间
     * @param end   结束时间  ； 时间为空，使用当前时间
     * @return
     */
    Result<List<CheckEvening>> getCheckEvenings(@Valid  MyPage<CheckEvening>myPage, Date start, Date end);

    /**
     * 后台添加晚自习查班记录
     * @param checkEvening
     * @return
     */
    Result addCheckEvening(@Valid CheckEvening checkEvening);

    /**
     * 删除晚自习记录
     * @param id
     * @return
     */
    Result delCheckEvening(@NotNull @Min(1) Integer id);

    /**
     * 更新晚自习记录
     * @param checkEvening
     * @return
     */
    Result upCheckEvening(@NotNull CheckEvening checkEvening);

    /**
     * 前台缓存添加数据
     * @param checkEvening 查晚自习对象
     * @return 工具
     */
    Result addCheckEveningMap(@NotNull CheckEvening checkEvening);

    /**
     * 修改缓存数据,(与上一个方法一样，但是别用上一个进行修改)
     * @param checkEvening 查晚自习对象
     * @return 工具
     */
    Result upCheckEventingMap(@NotNull CheckEvening checkEvening);

    /**
     * 删除缓存数据
     *
     * @param classId 班级编号
     * @return 工具
     */
    Result delCheckEventingMap(@NotNull Integer classId);

    /**
     * 获取查晚自习缓存
     * @return
     */
    Result getCacheMap();

    CheckEvening getOne(int id);

    /**
     * 导出表格
     */
    @Scheduled(cron = "* * 20 * * ? ")
    void exportExcelForCheckEvening();
}
